var playerObj = new player();
playerObj._init();
//Player Function
function player(){
    // Globale Variablen
    var tActive, cTime,tSlider,sInOut,pInOut;
    var formatTime   = "";

    var formatTimeInOut  = "";
    var inTime = 0;
    var outTime = 0;
    var currentSliderPositionIn = 0;
    var currentSliderPositionOut = 0;
    var totalRunningTime = 0;

    var currentOutTime = 0;
    // ENDE Globale Variablen


    this._init = function(){
        //alert(Math.ceil(jwplayer().getDuration()));
    }


    //  ermitteln der Aktuellen Position des Sliders
/*    this.activeTime = function(){
        this.getTime(jwplayer().getPosition());
        this.timeMsg();
        $('#activeTime strong').html(formatTime + ' ' + '/');
    };*/
    //  ENDE ermitteln der Aktuellen Position des Sliders

    //  ermitteln der Gesamtzeit des jeweiligen Films
   /* this.currentTime = function(){
        this.getTime(jwplayer().getDuration());
        $('#currentTime').html(formatTime);
    };*/
    //  ENDE ermitteln der Gesamtzeit des jeweiligen Films

    //  Ausgabe des richtigen Zeitformats
    this.getTime = function setInOutTime(time, inOrOut){
        var stunde       = "0";
        var minute       = "0";
        var sekunde      = "0";
        var sekundeInOut = "0.0";

        // Berechung der Zeitanzeige da nur Sekunden übergeben werden

        var floatStunde = time / 3600;

        if(floatStunde >= 1){
            var ergStunde = floatStunde.toString().split('.');

            stunde = ergStunde[0];
        }

        var floatMinute = time / 60;

        if(floatMinute >= 1){
            minute = (time - (stunde * 3600))/60;
            var ergMinute = minute.toString().split('.');

            minute = ergMinute[0];
        }

        var floatSecunde = time%60;

        if(floatSecunde >= 1){
            //sekunde      = (time%60).toFixed();
            sekundeInOut = (time%60).toFixed(1);
        }

        if(stunde < 10){
            stunde = '0' + stunde;
        }
        if(minute < 10){
            minute = '0' + minute;
        }
        /*if(sekunde < 10){
            sekunde = '0' + sekunde;
        }*/
        if(sekundeInOut < 10){
            sekundeInOut = '0' + sekundeInOut;
        }

        formatTime      = (stunde + ":" + minute + ":" + sekunde);
        formatTimeInOut = (stunde + ":" + minute + ":" + sekundeInOut);

        if(time <= 0){
            formatTimeInOut = "00:00:00.0";
        }
    };
    // ENDE Ausgabe des richtigen Zeitformats





    this.totalRunningTime = function(){
        totalRunningTime        = Math.ceil(jwplayer().getDuration()); // Gesamte Laufzeit des Clips in Sekunden
    };

    this.currentSliderPositionIn = function(time){
        currentSliderPositionIn   = Math.ceil(545 / totalRunningTime * time); //Aktuelle Zeit des Sliders in Pixeln
        return currentSliderPositionIn;
    };

    this.currentSliderPositionOut = function(time){
        currentSliderPositionOut   = Math.ceil(545 / totalRunningTime * time);
        return currentSliderPositionOut;
    };

    this.currentValue = function(){
        var currentValue = $( "#setInOutPoint" ).slider( "option", "values" );

        currentSliderPositionIn = currentValue[0];
        currentSliderPositionOut = currentValue[1];
    };



    //  Function zum setzten des IN und Out Points und ausgabe der zu spielen Strecke zwischen In und Out Point
    this.setInOut = function(){

        this.totalRunningTime();

        var valueOutPoint = $( "#setInOutPoint" ).slider( "option", "values" );

        var inPoint       = valueOutPoint[0];
        var outPoint      = valueOutPoint[1];

        var currentSliderInPoint    = 0;
        var currentSliderOutPoint   = 0;


        currentSliderInPoint      = (totalRunningTime / 545 * inPoint); // Aktuelle Zeit des In Point
        this.getTime(currentSliderInPoint);
        $('#inPointTime span').text(formatTimeInOut);//eintragen der Zeit in das span des Out points

        currentSliderOutPoint     = (totalRunningTime / 545 * outPoint); // Aktuelle Zeit des Out Point
        this.getTime(currentSliderOutPoint);
        $('#outPointTime span').text(formatTimeInOut); //eintragen der Zeit in das span des In points

        var fullTimeInAndOutPoints = currentSliderOutPoint - currentSliderInPoint;
        this.getTime(fullTimeInAndOutPoints);
        $('#time .inOutPointLength .totalPointsTime').text(formatTimeInOut);//Gesamtzeite zwischen In und Out Point

        this.currentValue();
    };

    this.OutOrInButton = function setOutOrIn(time, inOrOut){



            if(inOrOut == 'in'){
                this.currentSliderPositionIn(time);

                inTime = (time);
                this.getTime(inTime);
                var inPoint = formatTimeInOut;

               //Values des Slider

                $('#setInOutPoint').slider( "option", "values", [currentSliderPositionIn, currentSliderPositionOut ] );
                this.currentValue();
                var valueInPoint = $( "#setInOutPoint" ).slider( "option", "values" );

                var getLeftValue  = valueInPoint[0];
                var getRightValue = valueInPoint[1];


                    // Abfrage wenn In Point größer ist als Out Point
                    if (getRightValue <= getLeftValue){
                        $('#setInOutPoint').slider( "option", "values", [currentSliderPositionIn, currentSliderPositionIn] );
                        $('#outPointTime span').html(inPoint);
                        //currentSliderPositionOut = currentSliderPositionIn;
                        this.currentValue();
                    }

                    $('#inPointTime span').html(inPoint);

                      //Duration berechnen zwischen In und Out
                      $cDuration = outTime - inTime;
                      this.getTime($cDuration);

                      $('#totalPointsTime').html(formatTimeInOut);
                      $('#tmpDuration').html($cDuration);

           }else{

               this.currentSliderPositionOut(time);

               outTime = (time);
               this.getTime(outTime);
               var outPoint = formatTimeInOut;

               //Values des Slider


               if(currentSliderPositionIn == 0){

                   $('#setInOutPoint').slider( "option", "values", [0, currentSliderPositionOut] );
               }else{
                   $('#setInOutPoint').slider( "option", "values", [currentSliderPositionIn , currentSliderPositionOut] );
               }

               //this.currentValue();

               var valueOutPoint = $( "#setInOutPoint" ).slider( "option", "values" );

               var getLeftValue  = valueOutPoint[0];
               var getRightValue = valueOutPoint[1];

                    // Abfrage wenn Out Point kleiner ist als In Point
                    if(getRightValue < getLeftValue){

                        $('#setInOutPoint').slider( "option", "values", [currentSliderPositionOut, currentSliderPositionOut] );

                        $('#inPointTime span').html(outPoint);
                        this.currentValue();
                    }

                    $('#outPointTime span').html(outPoint);

                    //Duration berechnen zwischen In und Out
                    $cDuration = outTime - inTime;
                    this.getTime($cDuration);
                    $('#totalPointsTime').html(formatTimeInOut);
                    $('#tmpDuration').html($cDuration);
           }

       };

    this.setEditInPlace = function(){

        //Projektnamen editieren
        $("#playlist #projectName").editInPlace({
            callback: function(original_element, html, original){
                return(html);
            }
        });


         // editInPlace Funktionen für In und Out Point
        $("#time #inPointTime span").editInPlace({
                callback: function(original_element, html, original){

                    //playerObj.player();
                    var totalRunningTime     = Math.ceil(jwplayer().getDuration()); // Gesamte Laufzeit des Clips in Sekunden
                    var time                 = html;
                    //var currentSliderInPoint = 0;

                    // Berechung der Zeitanzeige in Sekunden
                    var ergStunde    = time.toString().split(':');
                    var floatStunde  = ergStunde[0] * 3600;
                    var floatMinute  = ergStunde[1] * 60;
                    var floatSecunde = ergStunde[2];
                    var intSec       = parseFloat(floatSecunde);
                    var erg          = 0;

                    var secTotal = (floatStunde + floatMinute + intSec);

                    //var checkPositionright = $('#setInOutPoint .ui-widget-header').next().next().css('left');
                    //var checkPositionleft = $('#setInOutPoint .ui-widget-header').next().css('left');

                    if(secTotal <= totalRunningTime){

                        currentSliderPositionIn   = Math.ceil(559 / totalRunningTime * secTotal);
                        //var currentSliderPercentage = Math.ceil(100 / 559 * currentSliderPosition);


                        $('#setInOutPoint').slider( "option", "values", [currentSliderPositionIn, currentSliderPositionOut] );
                       // playerObj.currentValue();
                        var getvalues = $( "#setInOutPoint" ).slider( "option", "values" );

                        var getLeftValue  =  getvalues[0];
                        var getRightValue =  getvalues[1];

                        var inpoint  = (totalRunningTime / 545 * getLeftValue);
                        var outpoint = (totalRunningTime / 545 * getRightValue);

                        erg    = outpoint - inpoint;

                        playerObj.getTime(erg);
                        $('#time .inOutPointLength .totalPointsTime').text(formatTimeInOut);//Gesamtzeite zwischen In und Out Point

                        // wenn In Point Wert größer als Out Point ist
                        if(getRightValue <= getLeftValue){
                            $('#setInOutPoint').slider( "option", "values", [currentSliderPositionIn, currentSliderPositionIn] );
                            $('#outPointTime span').text(html); //Gesamtzeite zwischen In und Out Point
                           // playerObj.currentValue();
                        }
                            return(html);

                    }else{
                        alert('Die eingegebene Zeit ist zu lang');
                        return(original);
                    }

                }
        });


        $("#time #outPointTime span").editInPlace({
                       callback: function(original_element, html, original){
                           var totalRunningTime     = Math.ceil(jwplayer().getDuration()); // Gesamte Laufzeit des Clips in Sekunden
                           var time                 = html;
                           //var currentSliderInPoint = 0;

                           // Berechung der Zeitanzeige in Sekunden
                           var ergStunde    = time.toString().split(':');
                           var floatStunde  = ergStunde[0] * 3600;
                           var floatMinute  = ergStunde[1] * 60;
                           var floatSecunde = ergStunde[2];
                           var intSec       = parseFloat(floatSecunde);
                           var erg          = 0;

                           var secTotal = (floatStunde + floatMinute + intSec);

                           if(secTotal <= totalRunningTime){
                              currentSliderPositionOut   = Math.ceil(559 / totalRunningTime * secTotal);

                               $('#setInOutPoint').slider( "option", "values", [currentSliderPositionIn, currentSliderPositionOut] );
                               //playerObj.currentValue();
                               var getvalues = $( "#setInOutPoint" ).slider( "option", "values" );

                               var getLeftValue  =  getvalues[0];
                               var getRightValue =  getvalues[1];

                               var inpoint  = (totalRunningTime / 545 * getLeftValue);
                               var outpoint = (totalRunningTime / 545 * getRightValue);

                               erg    = outpoint - inpoint;

                               //currentSliderInPoint  = (totalRunningTime / 100 * erg); // Aktuelle Zeit des In Point

                                 playerObj.getTime(erg);
                                 $('#time .inOutPointLength .totalPointsTime').text(formatTimeInOut);//Gesamtzeite zwischen In und Out Point

                               // Abfrage wenn Out Point kleiner ist als In Point
                               if (getRightValue < getLeftValue){
                                   $('#setInOutPoint').slider( "option", "values", [currentSliderPositionOut, currentSliderPositionOut] );
                                   $('#inPointTime span').text(html);//Gesamtzeite zwischen In und Out Point
                                   //playerObj.currentValue();
                               }
                               return(html);
                           }else{
                               alert('Die eingegebene Zeit ist zu lang');
                               return(original);
                           }
                       }

               });
    };

   /* this.setInOutOnChange = function(){
            var currentPosition         = Math.ceil(jwplayer().getPosition()); // Aktuelle Position des Clips in Sekunden
            var totalRunningTime        = Math.ceil(jwplayer().getDuration()); // Gesamte Laufzeit des Clips in Sekunden

            var valueOutPoint = $( "#setInOutPoint" ).slider( "option", "values" );
            //console.log(valueOutPoint[0]);
            //console.log(valueOutPoint[1]);
            var inPointPercentage       = $('#setInOutPoint .ui-widget-header').next().css('left');// Holen des Prozent Wert des In Points
            var outPointPercentage      = $('#setInOutPoint .ui-widget-header').next().next().css('left');// Holen des Prozent Wert des Out Points

            var currentSliderInPoint    = 0;
            var currentSliderOutPoint   = 0;
            var currentSliderPosition   = Math.ceil(553 / totalRunningTime * currentPosition);
            var currentSliderPercentage = Math.ceil(100 / 553 * currentSliderPosition); // Aktuelle Position des Sliders in Prozent

            // currentSliderInPoint    = Math.round(currentSliderInPoint*100)/100; // gerundet auf zwei Stellen hinterm Komma
            currentSliderInPoint      = (totalRunningTime / 100 * parseInt(inPointPercentage.replace(/%/, ""))); // Aktuelle Zeit des In Point
            this.getTime(currentSliderInPoint);
            $('#inPointTime span').text(formatTimeInOut);//eintragen der Zeit in das span des Out points

            //currentSliderOutPoint   = Math.round(currentSliderOutPoint*100)/100; //gerundet auf zwei Stellen hinterm Komma
            currentSliderOutPoint     = (totalRunningTime / 100 * parseInt(outPointPercentage.replace(/%/, ""))); // Aktuelle Zeit des In Points
            this.getTime(currentSliderOutPoint);
            $('#outPointTime span').text(formatTimeInOut); //eintragen der Zeit in das span des In points

            // Ausnahme fuer IE Und FF wegen px Wert
            if (inPointPercentage.match(/px$/)) {
                inPointPercentage = parseInt(inPointPercentage.replace(/px/, ""));

                // Berechnung prozentualer Wert
                inPointPercentage     = Math.round(100 / 553 * inPointPercentage);
                currentSliderInPoint   = (totalRunningTime / 100 * inPointPercentage); // Aktuelle Zeit des In Points
                currentSliderInPoint   = Math.round(currentSliderInPoint*100)/100; // gerundet auf zwei Stellen hinterm Komma

                this.getTime(currentSliderInPoint);
                $('#time #inPointTime span').text(formatTimeInOut);// eintragen der Zeit in das span des Out points
            }

            if (outPointPercentage.match(/px$/)) {
                outPointPercentage = parseInt(outPointPercentage.replace(/px/, ""));

                // Berechnung prozentualer Wert
                outPointPercentage      = Math.round(100 / 553 * outPointPercentage);
                currentSliderOutPoint   = (totalRunningTime / 100 * outPointPercentage); // Aktuelle Zeit des In Points
                currentSliderOutPoint   = Math.round(currentSliderOutPoint*100)/100; //gerundet auf zwei Stellen hinterm Komma

                this.getTime(currentSliderOutPoint);
                $('#time #outPointTime span').text(formatTimeInOut); //eintragen der Zeit in das span des In points
            }
            // ENDE Ausnahme fuer IE Und FF

            var fullTimeInAndOutPoints = currentSliderOutPoint - currentSliderInPoint;
            this.getTime(fullTimeInAndOutPoints);
            $('#time .inOutPointLength .totalPointsTime').text(formatTimeInOut);//Gesamtzeite zwischen In und Out Point
        };*/

    // ENDE Function zum setzten des IN und Out Points und ausgabe der zu spielen Strecke zwischen In und Out Point

    // Function zum abspielen der Strecke zwischen In und Out Point
    this.playInToOutPoint = function(){
        var totalRunningTime      = Math.ceil(jwplayer().getDuration()); // Gesamte Laufzeit des Clips in Sekunden
        var inPointPercentage     = $('#setInOutPoint .ui-widget-header').next().css('left');//Holen des Prozent Wert des In Points
        var currentSliderInPoint  = (totalRunningTime / 100 * parseInt(inPointPercentage.replace(/%/, ""))); // Aktuelle Zeit des In Points
        //currentSliderInPoint      = Math.round(currentSliderInPoint*100)/100; //gerundet auf zwei Stellen hinterm Komma

        // Ausnahme fuer IE Und FF wegen px Wert
        if (inPointPercentage.match(/px$/)) {
            inPointPercentage = parseInt(inPointPercentage.replace(/px/, ""));

            // Berechnung prozentualer Wert
            inPointPercentage     = Math.round(100 / 545 * inPointPercentage);
            currentSliderInPoint   = (totalRunningTime / 100 * inPointPercentage); // Aktuelle Zeit des In Points
            currentSliderInPoint   = Math.round(currentSliderInPoint*100)/100; //gerundet auf zwei Stellen hinterm Komma
            jwplayer().seek(currentSliderInPoint);
        }
        // ENDE Ausnahme fuer IE Und FF wegen px Wert
        this.playToOutPoint();
        jwplayer().seek(currentSliderInPoint);
    };
    // ENDE Function zum abspielen der Strecke zwischen In und Out Point

    // Function zum Stoppen beim Out Point
    this.playToOutPoint = function(){
        var totalRunningTime      = Math.ceil(jwplayer().getDuration());// Gesamtzeit in sec
        var currentPosition       = Math.ceil(jwplayer().getPosition()); // Aktuelle Position des Clips in Sekunden
        var outPointPercentage    = $('#setInOutPoint .ui-widget-header').next().next().css('left');//Holen des Prozent Wert des Out Points
        var currentSliderOutPoint = (totalRunningTime / 100 * parseInt(outPointPercentage.replace(/%/, ""))); // Aktuelle Zeit des Out Points

        pInOut = setTimeout('playerObj.playToOutPoint()',100);

        // Ausnahme fuer IE Und FF wegen px Wert
        if (outPointPercentage.match(/px$/)) {
            outPointPercentage    = parseInt(outPointPercentage.replace(/px/, ""));

            // Berechnung prozentualer Wert
            outPointPercentage    = Math.round(100 / 545 * outPointPercentage);
            currentSliderOutPoint = (totalRunningTime / 100 * outPointPercentage); // Aktuelle Zeit des In Points
        }
        // ENDE Ausnahme fuer IE Und FF wegen px Wert

        currentSliderOutPoint = Math.round(currentSliderOutPoint*100)/100;//gerundet auf eine Stelle hinterm Komma

        if(currentPosition >= currentSliderOutPoint ){
            jwplayer().pause(clearTimeout(pInOut));
        }

    };
    // ENDE Function zum Stoppen beim Out Point
} // ENDE Player Function
